/**
 * 跟节点操作(Element)相关
 * @authors: haoran.shu
 * @date: 2018-04-21 16:33:37
 */

/**
 * 转换 HTML 节点为普通的数组节点对象
 * @param h 需要转换的 hTML 节点对象(HTMLElement, HTMLCollection, NodeList)
 * @param n 转换过后的普通数组对象
 */
function HTML2NodeList(h, n) {
  if (h instanceof HTMLElement) {
    n.push(h);
  } else if (h instanceof HTMLCollection || h instanceof NodeList) {
    var i = 0,
      len = h.length;
    for (; i < len; i++) {
      n.push(h[i]);
    }
  }
}

/**
 * 获取节点
 * @param   s      选择器字符串(符合标准的querySelectorAll)或者DOM节点对象
 * @return Array   普通的数组包裹的DOM节点
 */
var $ = function(s) {
  var n = [];
  if (s) {
    if (typeof s === 'string') {
      HTML2NodeList(document.querySelectorAll(s), n);
    } else {
      HTML2NodeList(s, n);
    }
  }
  return n;
};

module.exports = $;
